extends CardState

func enter()->void:
	# 获取ui_layer 分组
	var ui_layer := get_tree().get_first_node_in_group("ui_layer")
	# 将cardui的父节点更变为新父节点，这样就实现了拖动卡牌时，父节点的变更
	if ui_layer:
		card_ui.reparent(ui_layer)

	card_ui.color.set('color', Color('#DA9987'))
	card_ui.state.text = 'DRAGGING'
	
# 拖动状态 可以通过鼠标右键 变更为 基本状态	
func on_input(event: InputEvent)->void:
	# 鼠标拖动标识
	var mouse_motion := event is InputEventMouseMotion
	# 取消的标识，按下右键，离开拖动状态
	var cancel = event.is_action_pressed('right_mouse')
	# 确认的标识， 释放左键 或者 再次按下左键 确定离开拖动状态
	var confirm =  event.is_action_released('left_mouse') or event.is_action_pressed('left_mouse')
	
	# 如果鼠标拖动，更新卡牌的全局位置，跟随鼠标的光标移动
	if mouse_motion:
		card_ui.global_position = card_ui.get_global_mouse_position() - card_ui.pivot_offset
	
	# 状态变更
	if cancel:
		# 发射信号 从拖动变为基本状态
		transition_requested.emit(self, CardState.State.BASE)
	elif confirm:
		# 如果节点位于场景树内部，则返回该节点最近的 Viewport 祖先。否则，返回 null。
		# 让输入停止继续沿着 SceneTree 向下传播 作用：设置输入为已经处理，避免立即拾取新的卡牌
		get_viewport().set_input_as_handled()
		# 发射信号 从拖动变为释放状态
		transition_requested.emit(self, CardState.State.RELEASED)
		
